package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;

import javax.swing.JFrame;
import javax.swing.JOptionPane;


import Modelo.Umpire;
import Principal.Liga;
import Vistas.VCalendario;
import Vistas.VLlenarTabla;
import Vistas.VPosiciones;
import Vistas.VUmpire;

public class CCalendario implements ActionListener {

	// vista y modelo que manejara el controlador
			private VCalendario vista ;
			//private Liga modelo;
			
			
			// constructor de la clase
			public CCalendario(VCalendario vista) {
				super();
				this.vista = vista;
				
			}
			
			@Override
			public void actionPerformed(ActionEvent ae) {
				
				if (ae.getActionCommand().equalsIgnoreCase("Generar Calendario")){
					//System.out.println("Presione generar calendario");
					
					// si no hay suficientes arbitros no puede generar calendario
					if (Liga.equipos.size()==0){
						JOptionPane.showMessageDialog(new JFrame(), "No Hay Equipos registrados","Calendario",JOptionPane.WARNING_MESSAGE);
					
					}
					else if (Liga.umpires.size()==0){
						JOptionPane.showMessageDialog(new JFrame(), "No Hay Arbitros registrados","Calendario",JOptionPane.WARNING_MESSAGE);
					
					}
					
					else if ((Liga.equipos.size()/2)> Liga.umpires.size()){
						JOptionPane.showMessageDialog(new JFrame(), "No Hay suficientes arbitros, no Habra LVBP","Calendario",JOptionPane.WARNING_MESSAGE);
					}
					
					else if (Liga.equipos.size()%2!=0){
						JOptionPane.showMessageDialog(new JFrame(), "Hay una cantidad impar de equipos no Habra LVBP","Calendario",JOptionPane.WARNING_MESSAGE);
									
					}
					else {
						Liga.generarCalendario();
						
						
						vista.setListado(new VLlenarTabla(Liga.calendario));
						
					}
					
				} 
				if (ae.getActionCommand().equalsIgnoreCase("Tabla de Posiciones")){
					Collections.sort(Liga.equipos, Liga.ordenarPosiciones);
					for (int i=0;i<Liga.equipos.size();i++)
					{
						int diferencia = ((Liga.equipos.get(0).getJuegosGanados() - 
								Liga.equipos.get(i).getJuegosGanados()) + 
								(Liga.equipos.get(i).getJuegosPerdidos() -
										Liga.equipos.get(0).getJuegosPerdidos())) / 2;	
						Liga.equipos.get(i).setJuegosDiferencia(diferencia);
						
					}
					new VPosiciones();
				}
				
				
				if (ae.getActionCommand().equalsIgnoreCase("Salir")){
					
					vista.dispose();
				}
				}

}
